Description:

Workflow begin

This tutorial comes from Seurat

Load required packages

library(dplyr)
library(Seurat)
library(leiden)
library(ggplot2)
library(patchwork)

Load data

Input is a directory that contains CellRanger count outputs

previous_time <- proc.time()[3]
Estrus.data <-Read10X(data.dir ="/home/nguyen/Estrus_cellranger_count/Estrus_Raw/")
proc.time()[3] - previous_time
elapsed 
  7.988 
  • View(Estrus.data) - run this command to investigate the output
  • Current dataset:
    • 31253 genes
    • 6599 cells

Initialize the Seurat object

  • Initialize the Seurat object with the raw (non-normalized data).
  • Filter out genes that are detected in less than 3 cells
  • Filter out cells that have less than 200 genes expressed
previous_time <- proc.time()[3]
Estrus <- CreateSeuratObject(counts = Estrus.data, project = "Estrus", min.cells = 3, min.features = 200)
proc.time()[3] - previous_time
elapsed 
  1.528 
Estrus
An object of class Seurat 
19420 features across 6481 samples within 1 assay 
Active assay: RNA (19420 features, 0 variable features)
  • Output:
    • 19420 genes
    • 6481 cells

Calculate the percentage of mitochondrial genes

  • Add “percent.mt” column to object metadata
  • Percentage of mitochondrial genes is stored in “percent.mt”
  • “^mt-” means strings start with mt (lowercase mt for mice, uppercase MT for human)
Estrus[["percent.mt"]] <- PercentageFeatureSet(Estrus, pattern = "^mt-")
# This is the list of genes that start with mt
mito_genes <- grep("^mt-", rownames(Estrus) , ignore.case=T, value=T)
print(mito_genes)
 [1] "mt-Nd1"  "mt-Nd2"  "mt-Co1"  "mt-Co2"  "mt-Atp8" "mt-Atp6" "mt-Co3"  "mt-Nd3"  "mt-Nd4l" "mt-Nd4"  "mt-Nd5"  "mt-Nd6"  "mt-Cytb"
# This is the data in "percent.mt" column
percent_mito <- FetchData(object = Estrus, vars = "percent.mt") #how to fetch data
head(percent_mito)
# Visualize QC metrics as a violin plot
VlnPlot(Estrus, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)

# FeatureScatter is typically used to visualize feature-feature relationships, but can be used
# for anything calculated by the object, i.e. columns in object metadata, PC scores etc.
plot1 <- FeatureScatter(Estrus, feature1 = "nCount_RNA", feature2 = "percent.mt")
plot2 <- FeatureScatter(Estrus, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")
plot1 + plot2

Filter out low-quality cells

  • We filter out cells that have unique feature counts over 6000
  • Because any cell that has more than 6000 genes are likely doublets
  • Note: Seurat tutorial used 2500 instead of 6000
  • We also filter out cells that have more than 5% mitochondrial genes
  • Because those are likely to be nonviable cells
previous_time <- proc.time()[3]
Estrus <- subset(Estrus, subset = nFeature_RNA < 6000 & percent.mt < 5)
proc.time()[3] - previous_time
elapsed 
  0.249 
Estrus
An object of class Seurat 
19420 features across 2174 samples within 1 assay 
Active assay: RNA (19420 features, 0 variable features)
  • After filtering step, the dataset is left with
  • 19420 genes
  • 2174 cells

Normalizing the data

  • Perform log-normalization method
  • Feature counts for each cell are divided by the total counts for that cell and multiplied by the scale.factor
  • scale.factor default value = 10,000
  • This is then natural-log transformed using log1p
previous_time <- proc.time()[3]
Estrus <- NormalizeData(Estrus, normalization.method = "LogNormalize", scale.factor = 10000)
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
proc.time()[3] - previous_time
elapsed 
  0.214 

Identification of highly variable features (feature selection)

previous_time <- proc.time()[3]
Estrus <- FindVariableFeatures(Estrus, selection.method = "disp", nfeatures = 5000)
Calculating gene means
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variance to mean ratios
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
proc.time()[3] - previous_time
elapsed 
  0.409 

Plotting highly variable features

# Identify the 10 most highly variable genes
top10 <- head(VariableFeatures(Estrus), 10)
top10
 [1] "Hbb-bs" "Hba-a1" "Hba-a2" "Dcpp3"  "Hbb-bt" "Ccl21a" "Apoe"   "Cd74"   "Ccl5"   "Dcpp1" 
# Plot variable features with and without labels
plot1 <- VariableFeaturePlot(Estrus)
plot2 <- LabelPoints(plot = plot1, points = top10, repel = TRUE)
When using repel, set xnudge and ynudge to 0 for optimal results
plot1 + plot2 
Warning: Removed 2 rows containing missing values (geom_point).
Warning: Removed 2 rows containing missing values (geom_point).

Regress out data and perform scaling

  • Regressing out total counts per cell and percent.mt before scaling.
  • Take out mitochondrial genes before scaling (analyzing) the data
  • Because mito_genes shouldn’t be accounted for cell population analysis.
previous_time <- proc.time()[3]
all.genes <- rownames(Estrus)
Estrus <- ScaleData(Estrus, features = all.genes, vars.to.regress = c("nCount_RNA","percent.mt"), scale.max = 10)
Regressing out nCount_RNA, percent.mt

  |                                                                                                                                  
  |                                                                                                                            |   0%
  |                                                                                                                                  
  |=                                                                                                                           |   0%
  |                                                                                                                                  
  |=                                                                                                                           |   1%
  |                                                                                                                                  
  |==                                                                                                                          |   1%
  |                                                                                                                                  
  |==                                                                                                                          |   2%
  |                                                                                                                                  
  |===                                                                                                                         |   2%
  |                                                                                                                                  
  |===                                                                                                                         |   3%
  |                                                                                                                                  
  |====                                                                                                                        |   3%
  |                                                                                                                                  
  |====                                                                                                                        |   4%
  |                                                                                                                                  
  |=====                                                                                                                       |   4%
  |                                                                                                                                  
  |======                                                                                                                      |   4%
  |                                                                                                                                  
  |======                                                                                                                      |   5%
  |                                                                                                                                  
  |=======                                                                                                                     |   5%
  |                                                                                                                                  
  |=======                                                                                                                     |   6%
  |                                                                                                                                  
  |========                                                                                                                    |   6%
  |                                                                                                                                  
  |========                                                                                                                    |   7%
  |                                                                                                                                  
  |=========                                                                                                                   |   7%
  |                                                                                                                                  
  |=========                                                                                                                   |   8%
  |                                                                                                                                  
  |==========                                                                                                                  |   8%
  |                                                                                                                                  
  |===========                                                                                                                 |   8%
  |                                                                                                                                  
  |===========                                                                                                                 |   9%
  |                                                                                                                                  
  |============                                                                                                                |   9%
  |                                                                                                                                  
  |============                                                                                                                |  10%
  |                                                                                                                                  
  |=============                                                                                                               |  10%
  |                                                                                                                                  
  |=============                                                                                                               |  11%
  |                                                                                                                                  
  |==============                                                                                                              |  11%
  |                                                                                                                                  
  |==============                                                                                                              |  12%
  |                                                                                                                                  
  |===============                                                                                                             |  12%
  |                                                                                                                                  
  |================                                                                                                            |  13%
  |                                                                                                                                  
  |=================                                                                                                           |  13%
  |                                                                                                                                  
  |=================                                                                                                           |  14%
  |                                                                                                                                  
  |==================                                                                                                          |  14%
  |                                                                                                                                  
  |==================                                                                                                          |  15%
  |                                                                                                                                  
  |===================                                                                                                         |  15%
  |                                                                                                                                  
  |===================                                                                                                         |  16%
  |                                                                                                                                  
  |====================                                                                                                        |  16%
  |                                                                                                                                  
  |====================                                                                                                        |  17%
  |                                                                                                                                  
  |=====================                                                                                                       |  17%
  |                                                                                                                                  
  |======================                                                                                                      |  17%
  |                                                                                                                                  
  |======================                                                                                                      |  18%
  |                                                                                                                                  
  |=======================                                                                                                     |  18%
  |                                                                                                                                  
  |=======================                                                                                                     |  19%
  |                                                                                                                                  
  |========================                                                                                                    |  19%
  |                                                                                                                                  
  |========================                                                                                                    |  20%
  |                                                                                                                                  
  |=========================                                                                                                   |  20%
  |                                                                                                                                  
  |=========================                                                                                                   |  21%
  |                                                                                                                                  
  |==========================                                                                                                  |  21%
  |                                                                                                                                  
  |===========================                                                                                                 |  21%
  |                                                                                                                                  
  |===========================                                                                                                 |  22%
  |                                                                                                                                  
  |============================                                                                                                |  22%
  |                                                                                                                                  
  |============================                                                                                                |  23%
  |                                                                                                                                  
  |=============================                                                                                               |  23%
  |                                                                                                                                  
  |=============================                                                                                               |  24%
  |                                                                                                                                  
  |==============================                                                                                              |  24%
  |                                                                                                                                  
  |==============================                                                                                              |  25%
  |                                                                                                                                  
  |===============================                                                                                             |  25%
  |                                                                                                                                  
  |================================                                                                                            |  25%
  |                                                                                                                                  
  |================================                                                                                            |  26%
  |                                                                                                                                  
  |=================================                                                                                           |  26%
  |                                                                                                                                  
  |=================================                                                                                           |  27%
  |                                                                                                                                  
  |==================================                                                                                          |  27%
  |                                                                                                                                  
  |==================================                                                                                          |  28%
  |                                                                                                                                  
  |===================================                                                                                         |  28%
  |                                                                                                                                  
  |===================================                                                                                         |  29%
  |                                                                                                                                  
  |====================================                                                                                        |  29%
  |                                                                                                                                  
  |=====================================                                                                                       |  29%
  |                                                                                                                                  
  |=====================================                                                                                       |  30%
  |                                                                                                                                  
  |======================================                                                                                      |  30%
  |                                                                                                                                  
  |======================================                                                                                      |  31%
  |                                                                                                                                  
  |=======================================                                                                                     |  31%
  |                                                                                                                                  
  |=======================================                                                                                     |  32%
  |                                                                                                                                  
  |========================================                                                                                    |  32%
  |                                                                                                                                  
  |========================================                                                                                    |  33%
  |                                                                                                                                  
  |=========================================                                                                                   |  33%
  |                                                                                                                                  
  |==========================================                                                                                  |  33%
  |                                                                                                                                  
  |==========================================                                                                                  |  34%
  |                                                                                                                                  
  |===========================================                                                                                 |  34%
  |                                                                                                                                  
  |===========================================                                                                                 |  35%
  |                                                                                                                                  
  |============================================                                                                                |  35%
  |                                                                                                                                  
  |============================================                                                                                |  36%
  |                                                                                                                                  
  |=============================================                                                                               |  36%
  |                                                                                                                                  
  |=============================================                                                                               |  37%
  |                                                                                                                                  
  |==============================================                                                                              |  37%
  |                                                                                                                                  
  |===============================================                                                                             |  38%
  |                                                                                                                                  
  |================================================                                                                            |  38%
  |                                                                                                                                  
  |================================================                                                                            |  39%
  |                                                                                                                                  
  |=================================================                                                                           |  39%
  |                                                                                                                                  
  |=================================================                                                                           |  40%
  |                                                                                                                                  
  |==================================================                                                                          |  40%
  |                                                                                                                                  
  |==================================================                                                                          |  41%
  |                                                                                                                                  
  |===================================================                                                                         |  41%
  |                                                                                                                                  
  |===================================================                                                                         |  42%
  |                                                                                                                                  
  |====================================================                                                                        |  42%
  |                                                                                                                                  
  |=====================================================                                                                       |  42%
  |                                                                                                                                  
  |=====================================================                                                                       |  43%
  |                                                                                                                                  
  |======================================================                                                                      |  43%
  |                                                                                                                                  
  |======================================================                                                                      |  44%
  |                                                                                                                                  
  |=======================================================                                                                     |  44%
  |                                                                                                                                  
  |=======================================================                                                                     |  45%
  |                                                                                                                                  
  |========================================================                                                                    |  45%
  |                                                                                                                                  
  |========================================================                                                                    |  46%
  |                                                                                                                                  
  |=========================================================                                                                   |  46%
  |                                                                                                                                  
  |==========================================================                                                                  |  46%
  |                                                                                                                                  
  |==========================================================                                                                  |  47%
  |                                                                                                                                  
  |===========================================================                                                                 |  47%
  |                                                                                                                                  
  |===========================================================                                                                 |  48%
  |                                                                                                                                  
  |============================================================                                                                |  48%
  |                                                                                                                                  
  |============================================================                                                                |  49%
  |                                                                                                                                  
  |=============================================================                                                               |  49%
  |                                                                                                                                  
  |=============================================================                                                               |  50%
  |                                                                                                                                  
  |==============================================================                                                              |  50%
  |                                                                                                                                  
  |===============================================================                                                             |  50%
  |                                                                                                                                  
  |===============================================================                                                             |  51%
  |                                                                                                                                  
  |================================================================                                                            |  51%
  |                                                                                                                                  
  |================================================================                                                            |  52%
  |                                                                                                                                  
  |=================================================================                                                           |  52%
  |                                                                                                                                  
  |=================================================================                                                           |  53%
  |                                                                                                                                  
  |==================================================================                                                          |  53%
  |                                                                                                                                  
  |==================================================================                                                          |  54%
  |                                                                                                                                  
  |===================================================================                                                         |  54%
  |                                                                                                                                  
  |====================================================================                                                        |  54%
  |                                                                                                                                  
  |====================================================================                                                        |  55%
  |                                                                                                                                  
  |=====================================================================                                                       |  55%
  |                                                                                                                                  
  |=====================================================================                                                       |  56%
  |                                                                                                                                  
  |======================================================================                                                      |  56%
  |                                                                                                                                  
  |======================================================================                                                      |  57%
  |                                                                                                                                  
  |=======================================================================                                                     |  57%
  |                                                                                                                                  
  |=======================================================================                                                     |  58%
  |                                                                                                                                  
  |========================================================================                                                    |  58%
  |                                                                                                                                  
  |=========================================================================                                                   |  58%
  |                                                                                                                                  
  |=========================================================================                                                   |  59%
  |                                                                                                                                  
  |==========================================================================                                                  |  59%
  |                                                                                                                                  
  |==========================================================================                                                  |  60%
  |                                                                                                                                  
  |===========================================================================                                                 |  60%
  |                                                                                                                                  
  |===========================================================================                                                 |  61%
  |                                                                                                                                  
  |============================================================================                                                |  61%
  |                                                                                                                                  
  |============================================================================                                                |  62%
  |                                                                                                                                  
  |=============================================================================                                               |  62%
  |                                                                                                                                  
  |==============================================================================                                              |  63%
  |                                                                                                                                  
  |===============================================================================                                             |  63%
  |                                                                                                                                  
  |===============================================================================                                             |  64%
  |                                                                                                                                  
  |================================================================================                                            |  64%
  |                                                                                                                                  
  |================================================================================                                            |  65%
  |                                                                                                                                  
  |=================================================================================                                           |  65%
  |                                                                                                                                  
  |=================================================================================                                           |  66%
  |                                                                                                                                  
  |==================================================================================                                          |  66%
  |                                                                                                                                  
  |==================================================================================                                          |  67%
  |                                                                                                                                  
  |===================================================================================                                         |  67%
  |                                                                                                                                  
  |====================================================================================                                        |  67%
  |                                                                                                                                  
  |====================================================================================                                        |  68%
  |                                                                                                                                  
  |=====================================================================================                                       |  68%
  |                                                                                                                                  
  |=====================================================================================                                       |  69%
  |                                                                                                                                  
  |======================================================================================                                      |  69%
  |                                                                                                                                  
  |======================================================================================                                      |  70%
  |                                                                                                                                  
  |=======================================================================================                                     |  70%
  |                                                                                                                                  
  |=======================================================================================                                     |  71%
  |                                                                                                                                  
  |========================================================================================                                    |  71%
  |                                                                                                                                  
  |=========================================================================================                                   |  71%
  |                                                                                                                                  
  |=========================================================================================                                   |  72%
  |                                                                                                                                  
  |==========================================================================================                                  |  72%
  |                                                                                                                                  
  |==========================================================================================                                  |  73%
  |                                                                                                                                  
  |===========================================================================================                                 |  73%
  |                                                                                                                                  
  |===========================================================================================                                 |  74%
  |                                                                                                                                  
  |============================================================================================                                |  74%
  |                                                                                                                                  
  |============================================================================================                                |  75%
  |                                                                                                                                  
  |=============================================================================================                               |  75%
  |                                                                                                                                  
  |==============================================================================================                              |  75%
  |                                                                                                                                  
  |==============================================================================================                              |  76%
  |                                                                                                                                  
  |===============================================================================================                             |  76%
  |                                                                                                                                  
  |===============================================================================================                             |  77%
  |                                                                                                                                  
  |================================================================================================                            |  77%
  |                                                                                                                                  
  |================================================================================================                            |  78%
  |                                                                                                                                  
  |=================================================================================================                           |  78%
  |                                                                                                                                  
  |=================================================================================================                           |  79%
  |                                                                                                                                  
  |==================================================================================================                          |  79%
  |                                                                                                                                  
  |===================================================================================================                         |  79%
  |                                                                                                                                  
  |===================================================================================================                         |  80%
  |                                                                                                                                  
  |====================================================================================================                        |  80%
  |                                                                                                                                  
  |====================================================================================================                        |  81%
  |                                                                                                                                  
  |=====================================================================================================                       |  81%
  |                                                                                                                                  
  |=====================================================================================================                       |  82%
  |                                                                                                                                  
  |======================================================================================================                      |  82%
  |                                                                                                                                  
  |======================================================================================================                      |  83%
  |                                                                                                                                  
  |=======================================================================================================                     |  83%
  |                                                                                                                                  
  |========================================================================================================                    |  83%
  |                                                                                                                                  
  |========================================================================================================                    |  84%
  |                                                                                                                                  
  |=========================================================================================================                   |  84%
  |                                                                                                                                  
  |=========================================================================================================                   |  85%
  |                                                                                                                                  
  |==========================================================================================================                  |  85%
  |                                                                                                                                  
  |==========================================================================================================                  |  86%
  |                                                                                                                                  
  |===========================================================================================================                 |  86%
  |                                                                                                                                  
  |===========================================================================================================                 |  87%
  |                                                                                                                                  
  |============================================================================================================                |  87%
  |                                                                                                                                  
  |=============================================================================================================               |  88%
  |                                                                                                                                  
  |==============================================================================================================              |  88%
  |                                                                                                                                  
  |==============================================================================================================              |  89%
  |                                                                                                                                  
  |===============================================================================================================             |  89%
  |                                                                                                                                  
  |===============================================================================================================             |  90%
  |                                                                                                                                  
  |================================================================================================================            |  90%
  |                                                                                                                                  
  |================================================================================================================            |  91%
  |                                                                                                                                  
  |=================================================================================================================           |  91%
  |                                                                                                                                  
  |=================================================================================================================           |  92%
  |                                                                                                                                  
  |==================================================================================================================          |  92%
  |                                                                                                                                  
  |===================================================================================================================         |  92%
  |                                                                                                                                  
  |===================================================================================================================         |  93%
  |                                                                                                                                  
  |====================================================================================================================        |  93%
  |                                                                                                                                  
  |====================================================================================================================        |  94%
  |                                                                                                                                  
  |=====================================================================================================================       |  94%
  |                                                                                                                                  
  |=====================================================================================================================       |  95%
  |                                                                                                                                  
  |======================================================================================================================      |  95%
  |                                                                                                                                  
  |======================================================================================================================      |  96%
  |                                                                                                                                  
  |=======================================================================================================================     |  96%
  |                                                                                                                                  
  |========================================================================================================================    |  96%
  |                                                                                                                                  
  |========================================================================================================================    |  97%
  |                                                                                                                                  
  |=========================================================================================================================   |  97%
  |                                                                                                                                  
  |=========================================================================================================================   |  98%
  |                                                                                                                                  
  |==========================================================================================================================  |  98%
  |                                                                                                                                  
  |==========================================================================================================================  |  99%
  |                                                                                                                                  
  |=========================================================================================================================== |  99%
  |                                                                                                                                  
  |=========================================================================================================================== | 100%
  |                                                                                                                                  
  |============================================================================================================================| 100%
Centering and scaling data matrix

  |                                                                                                                                  
  |                                                                                                                            |   0%
  |                                                                                                                                  
  |======                                                                                                                      |   5%
  |                                                                                                                                  
  |============                                                                                                                |  10%
  |                                                                                                                                  
  |===================                                                                                                         |  15%
  |                                                                                                                                  
  |=========================                                                                                                   |  20%
  |                                                                                                                                  
  |===============================                                                                                             |  25%
  |                                                                                                                                  
  |=====================================                                                                                       |  30%
  |                                                                                                                                  
  |===========================================                                                                                 |  35%
  |                                                                                                                                  
  |==================================================                                                                          |  40%
  |                                                                                                                                  
  |========================================================                                                                    |  45%
  |                                                                                                                                  
  |==============================================================                                                              |  50%
  |                                                                                                                                  
  |====================================================================                                                        |  55%
  |                                                                                                                                  
  |==========================================================================                                                  |  60%
  |                                                                                                                                  
  |=================================================================================                                           |  65%
  |                                                                                                                                  
  |=======================================================================================                                     |  70%
  |                                                                                                                                  
  |=============================================================================================                               |  75%
  |                                                                                                                                  
  |===================================================================================================                         |  80%
  |                                                                                                                                  
  |=========================================================================================================                   |  85%
  |                                                                                                                                  
  |================================================================================================================            |  90%
  |                                                                                                                                  
  |======================================================================================================================      |  95%
  |                                                                                                                                  
  |============================================================================================================================| 100%
# Explanations below are from [Seurat](https://satijalab.org/seurat/archive/v3.0/cell_cycle_vignette.html)
# vars.to.regress = RegressOut in Seurat version 1.4 or lower
# However, as the results of this procedure are stored in the scaled data slot (therefore overwriting the output of ScaleData) 
# This functionality is merged into the ScaleData function itself.
proc.time()[3] - previous_time
elapsed 
578.526 

Perform linear dimensional reduction (PCA)

previous_time <- proc.time()[3]
Estrus <- RunPCA(Estrus, features = VariableFeatures(object = Estrus))
PC_ 1 
Positive:  Gm867, 1700016K19Rik, 1700007K13Rik, Ccdc153, Tmem212, Gm19935, Dynlrb2, 1110017D15Rik, Cfap126, Fam166c 
       Fam183b, Vpreb3, Rsph1, Dnali1, Foxj1, Lrrc10b, Sntn, Tctex1d4, 1700024G13Rik, Mlf1 
       Pifo, Dnah12, Prr29, Hdc, 2410004P03Rik, Timp4, Efcab10, Tppp3, 2610028H24Rik, Lrrc51 
Negative:  Rps28, Rps19, Rpl18a, Rpl23a, Rplp0, Rpl13, Rpl37, Rpl32, Rps12, Rps18 
       Rps5, Rps29, Rps24, Rpl37a, Rps7, Rps27a, Rps23, Cd63, Rpl35, Rpl39 
       Rps4x, Rps11, Rpl27a, Rps20, Rps15a, Rps16, Rps3a1, Rpl19, Rpl10, Rps2 
PC_ 2 
Positive:  Cd68, Lcn2, Sprr2f, Arg1, Wfdc2, Sftpd, Pdzk1ip1, Prap1, Cxcl17, Clca1 
       Serpina1e, Fxyd3, Pigr, Ltf, Tmem45b, Ctss, Padi2, Tacstd2, Ly6a, Muc4 
       Padi1, Ckmt1, Trpv6, Fxyd4, Muc1, Pglyrp1, Rnf128, Cndp2, Car2, Alox5ap 
Negative:  Serpinh1, Sparc, Col1a2, Col3a1, Col1a1, Col6a1, Cald1, Bgn, Mgp, Aebp1 
       Col6a2, Igfbp7, Rarres2, Zbtb20, Dcn, Nbl1, Rcn3, Igfbp6, Mdk, Sparcl1 
       Fxyd1, Mfap2, Csrp2, Pbx1, Fxyd6, Col6a3, Col4a1, Gsn, Lgals1, Htra3 
PC_ 3 
Positive:  Tyrobp, Fcer1g, Ctss, Cd52, Csf1r, Cd74, H2-Aa, H2-Ab1, Laptm5, H2-Eb1 
       Aif1, Coro1a, Apoe, C1qc, Lyz2, C1qa, C1qb, H2-DMa, Pld4, Ms4a6c 
       Cx3cr1, Cybb, Ly86, Spi1, Ms4a7, Mpeg1, Trf, Fcgr3, Lst1, Fyb 
Negative:  Plet1, Ovgp1, Krt18, Wfdc18, Spint2, Aldoc, Gstm2, Epcam, Emb, Kctd14 
       Tpd52l1, Clu, Fxyd3, Dcxr, Kcnk1, Hddc2, Agr2, Rbp1, Psmd3, Cd9 
       Cldn22, Cystm1, Cldn7, Ppp1r1b, Gstm1, Rpl41, Mgst1, Tmem218, Krt19, Krt8 
PC_ 4 
Positive:  Clca1, Cxcl17, Pigr, Plac8, Muc4, Prap1, Slc40a1, Ly6a, Serpina1e, Tmem45b 
       Sprr2f, Trpv6, Tacstd2, Tmprss4, Tspan1, Prxl2a, Arg1, Padi2, Fxyd4, Fcgbp 
       Fut9, Lrg1, Ckmt1, Morrbid, Car2, Fbln1, Upk3bl, Ncoa7, Pdzk1ip1, Sult1d1 
Negative:  Kctd14, Gstm2, Ovgp1, Emb, Sdf2l1, Clu, Ctsc, Cbs, Tmem218, Gstm1 
       Slc1a3, Ppp1r1b, Smim14, Lrpap1, Shisa8, Cldn22, Fn1, Agr2, Wfdc18, Rcn1 
       Dkk3, Ncf2, Bex4, Gatm, Ccnd1, Gdpd2, Aldoc, Manf, Selenom, Cyth4 
PC_ 5 
Positive:  Gsn, Pdgfra, Htra3, Mfap4, Dpt, Mfap2, Serpinf1, Ntrk2, Col6a3, Mdk 
       Lpl, Penk, Lama2, Matn2, Col15a1, Gpm6b, Lrp1, Col1a1, Col5a2, Sparcl1 
       Ramp3, Htra1, Ftl1, Spon1, Ramp1, Islr, Col1a2, Plxdc2, Rxfp1, Osr2 
Negative:  Egfl7, Kdr, Ecscr, Cavin2, Pecam1, Cldn5, Cav1, Cdh5, Tie1, Mmrn1 
       Emcn, Flt4, Ushbp1, Mmrn2, Ccl21a, Podxl, Gimap6, S1pr1, Reln, Prox1 
       Adgrf5, Myct1, Gpm6a, Esam, Pard6g, Lyve1, Gimap1, Stmn2, Gimap4, Arhgap29 
proc.time()[3] - previous_time
elapsed 
  4.908 

Examine and visualize PCA results a few different ways

print(Estrus[["pca"]], dims = 1:5, nfeatures = 5)
PC_ 1 
Positive:  Gm867, 1700016K19Rik, 1700007K13Rik, Ccdc153, Tmem212 
Negative:  Rps28, Rps19, Rpl18a, Rpl23a, Rplp0 
PC_ 2 
Positive:  Cd68, Lcn2, Sprr2f, Arg1, Wfdc2 
Negative:  Serpinh1, Sparc, Col1a2, Col3a1, Col1a1 
PC_ 3 
Positive:  Tyrobp, Fcer1g, Ctss, Cd52, Csf1r 
Negative:  Plet1, Ovgp1, Krt18, Wfdc18, Spint2 
PC_ 4 
Positive:  Clca1, Cxcl17, Pigr, Plac8, Muc4 
Negative:  Kctd14, Gstm2, Ovgp1, Emb, Sdf2l1 
PC_ 5 
Positive:  Gsn, Pdgfra, Htra3, Mfap4, Dpt 
Negative:  Egfl7, Kdr, Ecscr, Cavin2, Pecam1 
VizDimLoadings(Estrus, dims = 1:2, reduction = "pca")

DimPlot(Estrus, reduction = "pca") + ggtitle(label = 'Including immune cells') 
ggsave(filename = "PCA_Including_immune_cells.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 7.29 x 4.5 in image

FeaturePlot(Estrus, reduction = "pca", features = c('Ovgp1', 
                                                    'Foxj1', 'Igf1', 'Pdxk', 
                                                    'Fxyd4', 'Bsg', 
                                                    'Serpina1e', 'Krt19'))

ggsave(filename = "PCA_Including_immune_cells1.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(Estrus, reduction = "pca", features = c('Dcn', 'Pax8',
                                                    'Ephx2', 
                                                    'Pecam1', 'Pdgfra', 'Myh11', 'Atp2b4', 
                                                    'Cd52'))

ggsave(filename = "PCA_Including_immune_cells2.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image

Determine the ‘dimensionality’ of the data

  • Seurat tutorial uses JackStraw() and and ScoreJackStraw to determine dimensionality
  • the syntax is:
    • Estrus <- JackStraw(Estrus, num.replicate = 100)
    • Estrus <- ScoreJackStraw(Estrus, dims = 1:20)
  • However, it takes very long.
  • An elbow plot often corresponds well enough with the significant dims and is much faster to run than Jackstraw
  • According to the graph below, choose the first 22 principle components to use
ElbowPlot(Estrus, ndims = 40)

Find neighbors

  • Dims = dimensions = determined as 22 from the above step
previous_time <- proc.time()[3]
Estrus_new <- FindNeighbors(Estrus, dims = 1:22, k.param = 10)
Computing nearest neighbor graph
Computing SNN
proc.time()[3] - previous_time
elapsed 
   0.35 

Find cell clusters using Leiden’s method

# Algorithm = 4 specifies Leiden's method
previous_time <- proc.time()[3]
Estrus_new <- FindClusters(Estrus_new, resolution = 0.12, algorithm = 4)
proc.time()[3] - previous_time
elapsed 
  0.572 

Constructing UMAP plot

previous_time <- proc.time()[3]
Estrus_new <- RunUMAP(Estrus_new, dim = 1:22) 
Warning: The default method for RunUMAP has changed from calling Python UMAP via reticulate to the R-native UWOT using the cosine metric
To use Python UMAP via reticulate, set umap.method to 'umap-learn' and metric to 'correlation'
This message will be shown once per session
15:19:40 UMAP embedding parameters a = 0.9922 b = 1.112
15:19:40 Read 2174 rows and found 22 numeric columns
15:19:40 Using Annoy for neighbor search, n_neighbors = 30
15:19:40 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
15:19:41 Writing NN index file to temp file /tmp/RtmprVQ6Uz/file198491edde60c
15:19:41 Searching Annoy index using 1 thread, search_k = 3000
15:19:41 Annoy recall = 100%
15:19:41 Commencing smooth kNN distance calibration using 1 thread
15:19:42 Initializing from normalized Laplacian + noise
15:19:42 Commencing optimization for 500 epochs, with 84680 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
15:19:44 Optimization finished
proc.time()[3] - previous_time
elapsed 
  3.273 

Visualization

DimPlot(Estrus_new, reduction = "umap") + ggtitle(label = 'Including immune cells')
ggsave(filename = "UMAP_Including_immune_cells.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 7.29 x 4.5 in image

FeaturePlot(Estrus_new, reduction = "umap", features = c('Ovgp1', 'Foxj1', 'Dcn', 'Serpina1e', 'Sprr2f',
                                                         'Fxyd4', 'Ly6a', 'Epcam', 'Krt19', 'Vim', 'Pdgfra'))

ggsave(filename = "UMAP_Including_immune_cells1.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(Estrus_new, reduction = "umap", features = c('Myh11', 
                                        'Dkk2', 'Slitrk6', 'Dio2', 'Smoc2', 'Tes', 'Dab1', 'Camk1d', 'Pecam1', 'Cd52','Mki67'))

ggsave(filename = "UMAP_Including_immune_cells2.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image

Removing immune cells

sub_Estrus = subset(x = Estrus_new, ident = c(1,2,3,4,5,7,8,9,11))
DimPlot(sub_Estrus, reduction = "umap") + ggtitle(label = 'Immune cells removed')

ggsave(filename = "UMAP_Immune_cells_removed.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(sub_Estrus, reduction = "umap", features = c('Ovgp1', 'Foxj1', 'Fxyd4', 'Cxcl17', 'Myh11', 'Cd52', 'Twist2', 'Pecam1'))

ggsave(filename = "UMAP_Immune_cells_removed1.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(sub_Estrus, reduction = "umap", features = c('Pdgfra', 'Ephx2', 'Dcn', 'Krt19', 'Epcam', 'Vim','Mki67'))

ggsave(filename = "UMAP_Immune_cells_removed2.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image
sub_Estrus
An object of class Seurat 
19420 features across 1926 samples within 1 assay 
Active assay: RNA (19420 features, 5000 variable features)
 2 dimensional reductions calculated: pca, umap
  • After removing immune cells, the dataset is left with:
    • 19420 genes
    • 1926 cells

Re-run analysis after excluding immune cells

previous_time <- proc.time()[3]
sub_Estrus <- RunPCA(sub_Estrus, features = VariableFeatures(object = sub_Estrus))
PC_ 1 
Positive:  Rps28, Rps19, Rplp0, Rpl13, Rpl23a, Rpl18a, Rpl37, Rpl32, Rps18, Rps5 
       Cd63, Rps12, Rps7, Rpl37a, Rps24, Rpl39, Rps27a, Rps23, Rps4x, Rps29 
       Rpl35, Rps20, Rpl27a, Rps3a1, Rps15a, Rps11, Rps2, Rpl10a, Rps16, Rpl10 
Negative:  Gm867, 1700016K19Rik, 1700007K13Rik, Ccdc153, Tmem212, Gm19935, Dynlrb2, Fam166c, 1110017D15Rik, Cfap126 
       Fam183b, Sntn, Foxj1, Dnali1, Vpreb3, Rsph1, Lrrc10b, Tctex1d4, Dnah12, 1700024G13Rik 
       Mlf1, Pifo, Prr29, 2410004P03Rik, Tppp3, Hdc, Dnaja4, Cfap77, Efcab10, Timp4 
PC_ 2 
Positive:  Lcn2, Fxyd3, Ltf, Wfdc2, Sftpd, Arg1, Pdzk1ip1, Sprr2f, Prap1, Epcam 
       Cxcl17, Serpina1e, Clca1, Muc1, Padi1, Rnf128, Pigr, Plet1, Elf3, Tmem45b 
       Ly6a, Tacstd2, Muc4, Ckmt1, Cldn7, Car2, Fxyd4, Pglyrp1, Trpv6, Tspan8 
Negative:  Col1a2, Serpinh1, Aebp1, Col3a1, Cald1, Col6a1, Col1a1, Sparc, Mgp, Rarres2 
       Bgn, Col6a2, Dcn, Rcn3, Igfbp6, Rnase4, Igfbp7, Zbtb20, Lgals1, Mdk 
       Nbl1, Igf1, Csrp2, Fxyd1, Lrp1, Sparcl1, Mfap2, Col6a3, Gsn, Timp2 
PC_ 3 
Positive:  Ovgp1, Kctd14, Gstm2, Emb, Clu, Wfdc18, Gstm1, Tmem218, Cbs, Aldoc 
       Ppp1r1b, Cldn22, Agr2, Slc1a3, Lrpap1, Shisa8, Tpd52l1, Rcn1, Dkk3, Sdf2l1 
       Fn1, Bex4, Manf, Gdpd2, Smim14, Selenom, Kcne3, Enho, Slc15a2, Slco2a1 
Negative:  Plac8, Clca1, Pigr, Muc4, Cxcl17, Slc40a1, Ly6a, Prap1, Tspan1, Tmem45b 
       Trpv6, Tmprss4, Serpina1e, Sprr2f, Tacstd2, Padi2, Prxl2a, Fcgbp, Fbln1, Cfh 
       Fut9, Fxyd4, Arg1, Rasa4, Lrg1, Morrbid, Ncoa7, Ckmt1, Slc39a8, Upk3bl 
PC_ 4 
Positive:  Upk3b, Nkain4, Lrrn4, Upk1b, C2, Myrf, Lgals2, Fgf1, Lgals7, Smoc2 
       Gpm6a, Serpinb6b, Slpi, Cldn15, Ogn, Cybrd1, Plxna4, Rspo1, Nrgn, Msln 
       Aldh1a2, Rpp25, Ptgis, Hpgd, Adam33, Prph, Lmcd1, Tm4sf5, Hacd4, Prss23 
Negative:  Pdgfra, Sparcl1, Gsn, Dpt, Mfap4, Htra3, Mfap2, Col15a1, Itih5, Gpm6b 
       Ramp3, Lama2, Ntrk2, Penk, G0s2, Serpinf1, Lpl, Spon1, Col6a3, Enpp2 
       Rxfp1, Pdgfrl, Matn2, Lhfp, Ctsk, Plpp3, Ramp1, P2ry1, Col5a3, Nrp1 
PC_ 5 
Positive:  Dcn, Aebp1, Ctsl, Pdgfra, Dpt, Pcolce, Fbln1, Lpl, Cygb, Ramp3 
       Ntrk2, Col15a1, Htra1, Meg3, Plxdc2, Htra3, Lum, Col5a3, Efemp1, Rnase4 
       Itm2a, Col3a1, Xdh, Cdh11, P2ry1, Ctsk, C1s1, Itm2b, Col6a2, Dkk2 
Negative:  Myh11, Cnn1, Lmod1, Fbxl22, Acta2, Mustn1, Actg2, Tagln, Sh3bgr, Mcam 
       Des, Mylk, Nexn, Myl9, Ppp1r14a, Slc22a3, Tpm2, Aoc3, Myom1, Synpo2 
       Postn, Carmn, Smtn, Dmpk, Ppp1r12b, Tpm1, Pgm5, Rbpms2, Slc2a4, Pdlim3 
proc.time()[3] - previous_time
elapsed 
  4.465 
DimPlot(sub_Estrus, reduction = "pca") + ggtitle(label = 'Immune cells removed')

ggsave(filename = "PCA_Immune_cells_removed.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(sub_Estrus, reduction = "pca", features = c('Esr1', 'Ovgp1', 'Foxj1', 'Fxyd4', 'Ephx2', 'Dcn'))

ggsave(filename = "PCA_Immune_cells_removed1.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(sub_Estrus, reduction = "pca", features = c('Fos', 'Kcne3', 'Serpina1e', 'Crabp2', 'Pgr', 'Vim'))

ggsave(filename = "PCA_Immune_cells_removed2.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image
previous_time <- proc.time()[3]
sub_Estrus_new <- FindNeighbors(sub_Estrus, dims = 1:22)
Computing nearest neighbor graph
Computing SNN
proc.time()[3] - previous_time
elapsed 
  0.319 
previous_time <- proc.time()[3]
sub_Estrus_new <- FindClusters(sub_Estrus_new, resolution = 0.04, algorithm = 4)
proc.time()[3] - previous_time
elapsed 
  0.565 
previous_time <- proc.time()[3]
sub_Estrus_new <- RunUMAP(sub_Estrus_new, dim = 1:22)
15:43:00 UMAP embedding parameters a = 0.9922 b = 1.112
15:43:00 Read 1926 rows and found 22 numeric columns
15:43:00 Using Annoy for neighbor search, n_neighbors = 30
15:43:00 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
15:43:00 Writing NN index file to temp file /tmp/RtmprVQ6Uz/file1984942c43de7
15:43:00 Searching Annoy index using 1 thread, search_k = 3000
15:43:00 Annoy recall = 100%
15:43:01 Commencing smooth kNN distance calibration using 1 thread
15:43:01 Initializing from normalized Laplacian + noise
15:43:01 Commencing optimization for 500 epochs, with 75792 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
15:43:03 Optimization finished
proc.time()[3] - previous_time
elapsed 
  2.853 
DimPlot(sub_Estrus_new, reduction = "umap") + ggtitle(label = 'Rescale UMAP after removing Immune cells')

ggsave(filename = "UMAP_Rescale.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 10 x 6.18 in image
FeaturePlot(sub_Estrus_new, reduction = "umap", features = c('Ovgp1', 'Foxj1', 'Crabp2', 'Myh11', 'Wt1', 'S100g', 'Sprr2f',
                  'Fxyd4'))

ggsave(filename = "UMAP_Rescale1.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(sub_Estrus_new, reduction = "umap", features = c('Dcn', 'Pax8', 'Pax2', 'Twist2', 'Igf1', 'Serpina1e', 'Pdgfra', 'Krt19', 'Mki67'))

ggsave(filename = "UMAP_Rescale2.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image

Marker genes

marker_genes = c('Epcam', 'Krt15','Krt8','Krt19','Vim','Pdgfra','Twist2', 'Sprr2f', 'Fxyd4', 'Igfbp6',
                 'Acta2', 'Myh11','Foxj1','Ovgp1','Wt1','Serpina1e','S100g','Pecam1')

UMAP for marker genes

FeaturePlot(sub_Estrus_new, reduction = "umap", features = c('Epcam', 'Krt15','Krt8','Krt19','Vim','Pdgfra','Twist2', 'Sprr2f', 'Fxyd4'))

ggsave(filename = "UMAP_for_Marker_genes1.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image
FeaturePlot(sub_Estrus_new, reduction = "umap", features = c('Igfbp6',
                                                             'Acta2', 'Myh11','Foxj1','Ovgp1','Wt1','Serpina1e','S100g','Pecam1'))

ggsave(filename = "UMAP_for_Marker_genes2.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image

Rename clusters

Cluster.names <- c('1 Ciliated_InfAmp',
                   '2 Epithelial_subset',
                   '3 Secretory_InfAmp',
                   '4 Fibroblast Pdgfra+',
                   '5 Secretory_IsthUTJ',
                   '6 Fibroblast Pdgfra-',
                   '7 Muscle')
names(Cluster.names) <- levels(sub_Estrus_new)
sub_Estrus_new <- RenameIdents(sub_Estrus_new, Cluster.names)
DimPlot(sub_Estrus_new, reduction = "umap", pt.size = 0.5) + scale_color_manual(labels = Cluster.names,values=c('green',                                                                                        'red','blue','orange','grey','yellow','pink','purple'))
ggsave(filename = "UMAP_Clusters_names.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 7.29 x 4.5 in image

DotPlot(sub_Estrus_new, features = marker_genes, group.by = sub_Estrus_new@meta.data$ident) +  
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
  scale_y_discrete(labels = Cluster.names)

ggsave(filename = "DotPlot_for_Marker_genes.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 12 x 7.41 in image

Number of cells in each clusters

table(sub_Estrus_new@active.ident, sub_Estrus_new@meta.data$orig.ident)
                      
                       Estrus
  1 Ciliated_InfAmp       399
  2 Epithelial_subset     378
  3 Secretory_InfAmp      335
  4 Fibroblast Pdgfra+    331
  5 Secretory_IsthUTJ     263
  6 Fibroblast Pdgfra-    129
  7 Muscle                 91

Extract top genes for each cluster

  • Default method of finding highly expressed genes for FindAllMarkers is Wilcoxon Rank Sum test
previous_time <- proc.time()[3]
sub_Estrus_new_markers <- FindAllMarkers(sub_Estrus_new, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)
Calculating cluster 1 Ciliated_InfAmp

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~11s          
  |++                                                | 2 % ~10s          
  |++                                                | 3 % ~10s          
  |+++                                               | 4 % ~10s          
  |+++                                               | 5 % ~10s          
  |++++                                              | 6 % ~10s          
  |++++                                              | 7 % ~10s          
  |+++++                                             | 8 % ~10s          
  |+++++                                             | 9 % ~10s          
  |++++++                                            | 10% ~09s          
  |++++++                                            | 11% ~09s          
  |+++++++                                           | 12% ~09s          
  |+++++++                                           | 13% ~09s          
  |++++++++                                          | 14% ~09s          
  |++++++++                                          | 15% ~09s          
  |+++++++++                                         | 16% ~09s          
  |+++++++++                                         | 18% ~09s          
  |++++++++++                                        | 19% ~09s          
  |++++++++++                                        | 20% ~08s          
  |+++++++++++                                       | 21% ~08s          
  |+++++++++++                                       | 22% ~08s          
  |++++++++++++                                      | 23% ~08s          
  |++++++++++++                                      | 24% ~08s          
  |+++++++++++++                                     | 25% ~08s          
  |+++++++++++++                                     | 26% ~08s          
  |++++++++++++++                                    | 27% ~08s          
  |++++++++++++++                                    | 28% ~08s          
  |+++++++++++++++                                   | 29% ~07s          
  |+++++++++++++++                                   | 30% ~07s          
  |++++++++++++++++                                  | 31% ~07s          
  |++++++++++++++++                                  | 32% ~07s          
  |+++++++++++++++++                                 | 33% ~07s          
  |++++++++++++++++++                                | 34% ~07s          
  |++++++++++++++++++                                | 35% ~07s          
  |+++++++++++++++++++                               | 36% ~07s          
  |+++++++++++++++++++                               | 37% ~07s          
  |++++++++++++++++++++                              | 38% ~07s          
  |++++++++++++++++++++                              | 39% ~06s          
  |+++++++++++++++++++++                             | 40% ~06s          
  |+++++++++++++++++++++                             | 41% ~06s          
  |++++++++++++++++++++++                            | 42% ~06s          
  |++++++++++++++++++++++                            | 43% ~06s          
  |+++++++++++++++++++++++                           | 44% ~06s          
  |+++++++++++++++++++++++                           | 45% ~06s          
  |++++++++++++++++++++++++                          | 46% ~06s          
  |++++++++++++++++++++++++                          | 47% ~06s          
  |+++++++++++++++++++++++++                         | 48% ~05s          
  |+++++++++++++++++++++++++                         | 49% ~05s          
  |++++++++++++++++++++++++++                        | 51% ~05s          
  |++++++++++++++++++++++++++                        | 52% ~05s          
  |+++++++++++++++++++++++++++                       | 53% ~05s          
  |+++++++++++++++++++++++++++                       | 54% ~05s          
  |++++++++++++++++++++++++++++                      | 55% ~05s          
  |++++++++++++++++++++++++++++                      | 56% ~05s          
  |+++++++++++++++++++++++++++++                     | 57% ~05s          
  |+++++++++++++++++++++++++++++                     | 58% ~04s          
  |++++++++++++++++++++++++++++++                    | 59% ~04s          
  |++++++++++++++++++++++++++++++                    | 60% ~04s          
  |+++++++++++++++++++++++++++++++                   | 61% ~04s          
  |+++++++++++++++++++++++++++++++                   | 62% ~04s          
  |++++++++++++++++++++++++++++++++                  | 63% ~04s          
  |++++++++++++++++++++++++++++++++                  | 64% ~04s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~04s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~04s          
  |++++++++++++++++++++++++++++++++++                | 67% ~03s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~03s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~03s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~03s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~03s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~03s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=11s  
Calculating cluster 2 Epithelial_subset

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~03s          
  |++                                                | 2 % ~03s          
  |++                                                | 3 % ~03s          
  |+++                                               | 4 % ~03s          
  |+++                                               | 5 % ~02s          
  |++++                                              | 7 % ~02s          
  |++++                                              | 8 % ~02s          
  |+++++                                             | 9 % ~02s          
  |+++++                                             | 10% ~02s          
  |++++++                                            | 11% ~02s          
  |++++++                                            | 12% ~02s          
  |+++++++                                           | 13% ~02s          
  |++++++++                                          | 14% ~02s          
  |++++++++                                          | 15% ~02s          
  |+++++++++                                         | 16% ~02s          
  |+++++++++                                         | 17% ~02s          
  |++++++++++                                        | 18% ~02s          
  |++++++++++                                        | 20% ~02s          
  |+++++++++++                                       | 21% ~02s          
  |+++++++++++                                       | 22% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |++++++++++++                                      | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |++++++++++++++                                    | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |+++++++++++++++                                   | 28% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |++++++++++++++++                                  | 30% ~02s          
  |++++++++++++++++                                  | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |+++++++++++++++++                                 | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |++++++++++++++++++                                | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |++++++++++++++++++++++                            | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |+++++++++++++++++++++++                           | 46% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |++++++++++++++++++++++++                          | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |+++++++++++++++++++++++++                         | 50% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |++++++++++++++++++++++++++++                      | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |+++++++++++++++++++++++++++++                     | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |++++++++++++++++++++++++++++++++++                | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  
Calculating cluster 3 Secretory_InfAmp

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~05s          
  |++                                                | 2 % ~04s          
  |++                                                | 3 % ~04s          
  |+++                                               | 4 % ~03s          
  |+++                                               | 5 % ~03s          
  |++++                                              | 6 % ~03s          
  |++++                                              | 7 % ~03s          
  |+++++                                             | 9 % ~03s          
  |+++++                                             | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |++++++                                            | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |+++++++                                           | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |++++++++                                          | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |+++++++++++                                       | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |++++++++++++                                      | 22% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |+++++++++++++                                     | 24% ~02s          
  |+++++++++++++                                     | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |++++++++++++++                                    | 28% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |+++++++++++++++                                   | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |++++++++++++++++                                  | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |++++++++++++++++++++++                            | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |+++++++++++++++++++++++                           | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |++++++++++++++++++++++++                          | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |++++++++++++++++++++++++++++                      | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  
Calculating cluster 4 Fibroblast Pdgfra+

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~02s          
  |++                                                | 2 % ~03s          
  |++                                                | 3 % ~03s          
  |+++                                               | 4 % ~02s          
  |+++                                               | 5 % ~02s          
  |++++                                              | 6 % ~02s          
  |++++                                              | 8 % ~02s          
  |+++++                                             | 9 % ~02s          
  |+++++                                             | 10% ~02s          
  |++++++                                            | 11% ~02s          
  |++++++                                            | 12% ~02s          
  |+++++++                                           | 13% ~02s          
  |+++++++                                           | 14% ~02s          
  |++++++++                                          | 15% ~02s          
  |+++++++++                                         | 16% ~02s          
  |+++++++++                                         | 17% ~02s          
  |++++++++++                                        | 18% ~02s          
  |++++++++++                                        | 19% ~02s          
  |+++++++++++                                       | 20% ~02s          
  |+++++++++++                                       | 22% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |++++++++++++                                      | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |+++++++++++++                                     | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |++++++++++++++                                    | 28% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |++++++++++++++++                                  | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |+++++++++++++++++                                 | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |+++++++++++++++++++                               | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |+++++++++++++++++++++++                           | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 46% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |+++++++++++++++++++++++++                         | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |++++++++++++++++++++++++++                        | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |+++++++++++++++++++++++++++                       | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |++++++++++++++++++++++++++++                      | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |++++++++++++++++++++++++++++++++                  | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  
Calculating cluster 5 Secretory_IsthUTJ

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 2 % ~04s          
  |++                                                | 3 % ~04s          
  |+++                                               | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |++++                                              | 6 % ~04s          
  |++++                                              | 7 % ~04s          
  |+++++                                             | 8 % ~04s          
  |+++++                                             | 9 % ~04s          
  |++++++                                            | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |+++++++                                           | 12% ~03s          
  |+++++++                                           | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |++++++++                                          | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |+++++++++                                         | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |++++++++++                                        | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |+++++++++++                                       | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |++++++++++++                                      | 24% ~03s          
  |+++++++++++++                                     | 25% ~03s          
  |++++++++++++++                                    | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |+++++++++++++++                                   | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |++++++++++++++++                                  | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |+++++++++++++++++                                 | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |++++++++++++++++++                                | 34% ~03s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 36% ~02s          
  |+++++++++++++++++++                               | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |++++++++++++++++++++++                            | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |+++++++++++++++++++++++                           | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |++++++++++++++++++++++++                          | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |++++++++++++++++++++++++++++                      | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |+++++++++++++++++++++++++++++++                   | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
Calculating cluster 6 Fibroblast Pdgfra-

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 2 % ~04s          
  |++                                                | 3 % ~04s          
  |+++                                               | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |++++                                              | 6 % ~04s          
  |++++                                              | 7 % ~04s          
  |+++++                                             | 9 % ~03s          
  |+++++                                             | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |++++++                                            | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |+++++++                                           | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |++++++++                                          | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |+++++++++++                                       | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |++++++++++++                                      | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |+++++++++++++                                     | 24% ~03s          
  |+++++++++++++                                     | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |++++++++++++++                                    | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |+++++++++++++++                                   | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |++++++++++++++++                                  | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |++++++++++++++++++++++                            | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |+++++++++++++++++++++++                           | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |++++++++++++++++++++++++                          | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |++++++++++++++++++++++++++++                      | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |++++++++++++++++++++++++++++++                    | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
Calculating cluster 7 Muscle

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~02s          
  |++                                                | 2 % ~02s          
  |++                                                | 3 % ~02s          
  |+++                                               | 4 % ~02s          
  |+++                                               | 5 % ~02s          
  |++++                                              | 6 % ~02s          
  |++++                                              | 7 % ~02s          
  |+++++                                             | 8 % ~02s          
  |+++++                                             | 9 % ~02s          
  |++++++                                            | 11% ~02s          
  |++++++                                            | 12% ~02s          
  |+++++++                                           | 13% ~02s          
  |+++++++                                           | 14% ~02s          
  |++++++++                                          | 15% ~02s          
  |++++++++                                          | 16% ~02s          
  |+++++++++                                         | 17% ~02s          
  |+++++++++                                         | 18% ~02s          
  |++++++++++                                        | 19% ~02s          
  |++++++++++                                        | 20% ~02s          
  |+++++++++++                                       | 21% ~02s          
  |++++++++++++                                      | 22% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |+++++++++++++                                     | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |++++++++++++++                                    | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |+++++++++++++++                                   | 28% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |++++++++++++++++                                  | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |+++++++++++++++++                                 | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |++++++++++++++++++                                | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |+++++++++++++++++++                               | 38% ~01s          
  |++++++++++++++++++++                              | 39% ~01s          
  |++++++++++++++++++++                              | 40% ~01s          
  |+++++++++++++++++++++                             | 41% ~01s          
  |++++++++++++++++++++++                            | 42% ~01s          
  |++++++++++++++++++++++                            | 43% ~01s          
  |+++++++++++++++++++++++                           | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 46% ~01s          
  |++++++++++++++++++++++++                          | 47% ~01s          
  |+++++++++++++++++++++++++                         | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |++++++++++++++++++++++++++                        | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 53% ~01s          
  |+++++++++++++++++++++++++++                       | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |++++++++++++++++++++++++++++                      | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |+++++++++++++++++++++++++++++                     | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |++++++++++++++++++++++++++++++++                  | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |++++++++++++++++++++++++++++++++++                | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s  
sub_Estrus_new_markers %>%
    group_by(cluster) %>%
    slice_max(n = 20, order_by = avg_log2FC)
proc.time()[3] - previous_time
elapsed 
 31.848 

Heat map for top 10 genes in each cluster

sub_Estrus_new_markers %>%
    group_by(cluster) %>%
    top_n(n = 10, wt = avg_log2FC) -> top10
DoHeatmap(sub_Estrus_new, features = top10$gene) + NoLegend()

ggsave(filename = "HeatMap_Top10_genes.pdf", plot = last_plot(), device = "pdf",
         path = "/home/nguyen/FinalWork/R/Read10x/Figures/")
Saving 10 x 6.18 in image
saveRDS(sub_Estrus_new, file = "/home/nguyen/FinalWork/R/Read10x/Estrus_subset_analyzed.rds")
LS0tCnRpdGxlOiAic2NSTkEtc2VxIGFuYWx5c2lzIHVzaW5nIFNldXJhdCBwYWNrYWdlIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKYXV0aG9yOiBMb25nIE5ndXllbgotLS0KIyBEZXNjcmlwdGlvbjoKKiBUaGUgcHVycG9zZSBvZiB0aGlzIG5vdGVib29rIGlzIHRvIGFuYWx5emUgc2NSTkEtc2VxIGRhdGEgb2YgbW91c2UgRXN0cnVzCiogVGhlIG1ldGhvZCB1c2VkIGlzIHJlYWRpbmcgZGlyZWN0bHkgZnJvbSBtdHggZmlsZXMgKENlbGxSYW5nZXIgY291bnQgb3V0cHV0cykKKiBUaGUgYWxnb3JpdGhtcyB1c2VkIGNvbWUgZnJvbSBTZXVyYXQgcGFja2FnZSAKKiBUaGUgcmVzdWx0cyB3aWxsIGNvbXBhcmVkIHRvOgogICsgU2FtZSBkYXRhc2V0IGFuYWx5emVkIHVzaW5nIFNjYW5weSAtIHJlYWQxMHgKICArIFNhbWUgZGF0YXNldCBhbmFseXplZCB1c2luZyBTY2FucHkgLSByZWFkbG9vbQogIAojIFdvcmtmbG93IGJlZ2luClRoaXMgdHV0b3JpYWwgY29tZXMgZnJvbSBbU2V1cmF0XShodHRwczovL3NhdGlqYWxhYi5vcmcvc2V1cmF0L2FydGljbGVzL3BibWMza190dXRvcmlhbC5odG1sKQoKIyMgTG9hZCByZXF1aXJlZCBwYWNrYWdlcwpgYGB7cn0KbGlicmFyeShkcGx5cikKbGlicmFyeShTZXVyYXQpCmxpYnJhcnkobGVpZGVuKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkocGF0Y2h3b3JrKQpgYGAKCgojIyBMb2FkIGRhdGEKSW5wdXQgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBDZWxsUmFuZ2VyIGNvdW50IG91dHB1dHMKYGBge3J9CnByZXZpb3VzX3RpbWUgPC0gcHJvYy50aW1lKClbM10KRXN0cnVzLmRhdGEgPC1SZWFkMTBYKGRhdGEuZGlyID0iL2hvbWUvbmd1eWVuL0VzdHJ1c19jZWxscmFuZ2VyX2NvdW50L0VzdHJ1c19SYXcvIikKcHJvYy50aW1lKClbM10gLSBwcmV2aW91c190aW1lCmBgYAoqIFZpZXcoRXN0cnVzLmRhdGEpIC0gcnVuIHRoaXMgY29tbWFuZCB0byBpbnZlc3RpZ2F0ZSB0aGUgb3V0cHV0CiogQ3VycmVudCBkYXRhc2V0OgogICsgMzEyNTMgZ2VuZXMKICArIDY1OTkgY2VsbHMKCiMjIEluaXRpYWxpemUgdGhlIFNldXJhdCBvYmplY3QKKiBJbml0aWFsaXplIHRoZSBTZXVyYXQgb2JqZWN0IHdpdGggdGhlIHJhdyAobm9uLW5vcm1hbGl6ZWQgZGF0YSkuCiogRmlsdGVyIG91dCBnZW5lcyB0aGF0IGFyZSBkZXRlY3RlZCBpbiBsZXNzIHRoYW4gMyBjZWxscyAKKiBGaWx0ZXIgb3V0IGNlbGxzIHRoYXQgaGF2ZSBsZXNzIHRoYW4gMjAwIGdlbmVzIGV4cHJlc3NlZApgYGB7cn0KcHJldmlvdXNfdGltZSA8LSBwcm9jLnRpbWUoKVszXQpFc3RydXMgPC0gQ3JlYXRlU2V1cmF0T2JqZWN0KGNvdW50cyA9IEVzdHJ1cy5kYXRhLCBwcm9qZWN0ID0gIkVzdHJ1cyIsIG1pbi5jZWxscyA9IDMsIG1pbi5mZWF0dXJlcyA9IDIwMCkKcHJvYy50aW1lKClbM10gLSBwcmV2aW91c190aW1lCkVzdHJ1cwpgYGAKKiBPdXRwdXQ6CiAgKyAxOTQyMCBnZW5lcyAKICArIDY0ODEgY2VsbHMKCiMjIENhbGN1bGF0ZSB0aGUgcGVyY2VudGFnZSBvZiBtaXRvY2hvbmRyaWFsIGdlbmVzCiogQWRkICJwZXJjZW50Lm10IiBjb2x1bW4gdG8gb2JqZWN0IG1ldGFkYXRhCiogUGVyY2VudGFnZSBvZiBtaXRvY2hvbmRyaWFsIGdlbmVzIGlzIHN0b3JlZCBpbiAicGVyY2VudC5tdCIKKiAiXm10LSIgbWVhbnMgc3RyaW5ncyBzdGFydCB3aXRoIG10IChsb3dlcmNhc2UgbXQgZm9yIG1pY2UsIHVwcGVyY2FzZSBNVCBmb3IgaHVtYW4pCmBgYHtyfQpFc3RydXNbWyJwZXJjZW50Lm10Il1dIDwtIFBlcmNlbnRhZ2VGZWF0dXJlU2V0KEVzdHJ1cywgcGF0dGVybiA9ICJebXQtIikKYGBgCgpgYGB7cn0KIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGdlbmVzIHRoYXQgc3RhcnQgd2l0aCBtdAptaXRvX2dlbmVzIDwtIGdyZXAoIl5tdC0iLCByb3duYW1lcyhFc3RydXMpICwgaWdub3JlLmNhc2U9VCwgdmFsdWU9VCkKcHJpbnQobWl0b19nZW5lcykKYGBgCgpgYGB7cn0KIyBUaGlzIGlzIHRoZSBkYXRhIGluICJwZXJjZW50Lm10IiBjb2x1bW4KcGVyY2VudF9taXRvIDwtIEZldGNoRGF0YShvYmplY3QgPSBFc3RydXMsIHZhcnMgPSAicGVyY2VudC5tdCIpICNob3cgdG8gZmV0Y2ggZGF0YQpoZWFkKHBlcmNlbnRfbWl0bykKYGBgCgpgYGB7ciwgZmlnLndpZHRoPTEwfQojIFZpc3VhbGl6ZSBRQyBtZXRyaWNzIGFzIGEgdmlvbGluIHBsb3QKVmxuUGxvdChFc3RydXMsIGZlYXR1cmVzID0gYygibkZlYXR1cmVfUk5BIiwgIm5Db3VudF9STkEiLCAicGVyY2VudC5tdCIpLCBuY29sID0gMykKYGBgCmBgYHtyfQojIEZlYXR1cmVTY2F0dGVyIGlzIHR5cGljYWxseSB1c2VkIHRvIHZpc3VhbGl6ZSBmZWF0dXJlLWZlYXR1cmUgcmVsYXRpb25zaGlwcywgYnV0IGNhbiBiZSB1c2VkCiMgZm9yIGFueXRoaW5nIGNhbGN1bGF0ZWQgYnkgdGhlIG9iamVjdCwgaS5lLiBjb2x1bW5zIGluIG9iamVjdCBtZXRhZGF0YSwgUEMgc2NvcmVzIGV0Yy4KcGxvdDEgPC0gRmVhdHVyZVNjYXR0ZXIoRXN0cnVzLCBmZWF0dXJlMSA9ICJuQ291bnRfUk5BIiwgZmVhdHVyZTIgPSAicGVyY2VudC5tdCIpCnBsb3QyIDwtIEZlYXR1cmVTY2F0dGVyKEVzdHJ1cywgZmVhdHVyZTEgPSAibkNvdW50X1JOQSIsIGZlYXR1cmUyID0gIm5GZWF0dXJlX1JOQSIpCnBsb3QxICsgcGxvdDIKYGBgCgojIyBGaWx0ZXIgb3V0IGxvdy1xdWFsaXR5IGNlbGxzCiogV2UgZmlsdGVyIG91dCBjZWxscyB0aGF0IGhhdmUgdW5pcXVlIGZlYXR1cmUgY291bnRzIG92ZXIgNjAwMAoqIEJlY2F1c2UgYW55IGNlbGwgdGhhdCBoYXMgbW9yZSB0aGFuIDYwMDAgZ2VuZXMgYXJlIGxpa2VseSBkb3VibGV0cwoqIE5vdGU6IFNldXJhdCB0dXRvcmlhbCB1c2VkIDI1MDAgaW5zdGVhZCBvZiA2MDAwCiogV2UgYWxzbyBmaWx0ZXIgb3V0IGNlbGxzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gNSUgbWl0b2Nob25kcmlhbCBnZW5lcwoqIEJlY2F1c2UgdGhvc2UgYXJlIGxpa2VseSB0byBiZSBub252aWFibGUgY2VsbHMKYGBge3J9CnByZXZpb3VzX3RpbWUgPC0gcHJvYy50aW1lKClbM10KRXN0cnVzIDwtIHN1YnNldChFc3RydXMsIHN1YnNldCA9IG5GZWF0dXJlX1JOQSA8IDYwMDAgJiBwZXJjZW50Lm10IDwgNSkKcHJvYy50aW1lKClbM10gLSBwcmV2aW91c190aW1lCmBgYApgYGB7cn0KRXN0cnVzCmBgYAoqIEFmdGVyIGZpbHRlcmluZyBzdGVwLCB0aGUgZGF0YXNldCBpcyBsZWZ0IHdpdGgKICsgMTk0MjAgZ2VuZXMKICsgMjE3NCBjZWxscwoKIyMgTm9ybWFsaXppbmcgdGhlIGRhdGEKKiBQZXJmb3JtIGxvZy1ub3JtYWxpemF0aW9uIG1ldGhvZAoqIEZlYXR1cmUgY291bnRzIGZvciBlYWNoIGNlbGwgYXJlIGRpdmlkZWQgYnkgdGhlIHRvdGFsIGNvdW50cyBmb3IgdGhhdCBjZWxsIGFuZCBtdWx0aXBsaWVkIGJ5IHRoZSBzY2FsZS5mYWN0b3IKKiBzY2FsZS5mYWN0b3IgZGVmYXVsdCB2YWx1ZSA9IDEwLDAwMAoqIFRoaXMgaXMgdGhlbiBuYXR1cmFsLWxvZyB0cmFuc2Zvcm1lZCB1c2luZyBsb2cxcApgYGB7cn0KcHJldmlvdXNfdGltZSA8LSBwcm9jLnRpbWUoKVszXQpFc3RydXMgPC0gTm9ybWFsaXplRGF0YShFc3RydXMsIG5vcm1hbGl6YXRpb24ubWV0aG9kID0gIkxvZ05vcm1hbGl6ZSIsIHNjYWxlLmZhY3RvciA9IDEwMDAwKQpwcm9jLnRpbWUoKVszXSAtIHByZXZpb3VzX3RpbWUKYGBgCiMjIElkZW50aWZpY2F0aW9uIG9mIGhpZ2hseSB2YXJpYWJsZSBmZWF0dXJlcyAoZmVhdHVyZSBzZWxlY3Rpb24pCmBgYHtyfQpwcmV2aW91c190aW1lIDwtIHByb2MudGltZSgpWzNdCkVzdHJ1cyA8LSBGaW5kVmFyaWFibGVGZWF0dXJlcyhFc3RydXMsIHNlbGVjdGlvbi5tZXRob2QgPSAiZGlzcCIsIG5mZWF0dXJlcyA9IDUwMDApCnByb2MudGltZSgpWzNdIC0gcHJldmlvdXNfdGltZQpgYGAKIyMgUGxvdHRpbmcgaGlnaGx5IHZhcmlhYmxlIGZlYXR1cmVzCmBgYHtyfQojIElkZW50aWZ5IHRoZSAxMCBtb3N0IGhpZ2hseSB2YXJpYWJsZSBnZW5lcwp0b3AxMCA8LSBoZWFkKFZhcmlhYmxlRmVhdHVyZXMoRXN0cnVzKSwgMTApCnRvcDEwCmBgYAoKYGBge3IsIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD00fQojIFBsb3QgdmFyaWFibGUgZmVhdHVyZXMgd2l0aCBhbmQgd2l0aG91dCBsYWJlbHMKcGxvdDEgPC0gVmFyaWFibGVGZWF0dXJlUGxvdChFc3RydXMpCnBsb3QyIDwtIExhYmVsUG9pbnRzKHBsb3QgPSBwbG90MSwgcG9pbnRzID0gdG9wMTAsIHJlcGVsID0gVFJVRSkKcGxvdDEgKyBwbG90MiAKYGBgCiMjIFJlZ3Jlc3Mgb3V0IGRhdGEgYW5kIHBlcmZvcm0gc2NhbGluZwoqIFJlZ3Jlc3Npbmcgb3V0IHRvdGFsIGNvdW50cyBwZXIgY2VsbCBhbmQgcGVyY2VudC5tdCBiZWZvcmUgc2NhbGluZy4gCiogVGFrZSBvdXQgbWl0b2Nob25kcmlhbCBnZW5lcyBiZWZvcmUgc2NhbGluZyAoYW5hbHl6aW5nKSB0aGUgZGF0YSAKKiBCZWNhdXNlIG1pdG9fZ2VuZXMgc2hvdWxkbid0IGJlIGFjY291bnRlZCBmb3IgY2VsbCBwb3B1bGF0aW9uIGFuYWx5c2lzLgpgYGB7cn0KcHJldmlvdXNfdGltZSA8LSBwcm9jLnRpbWUoKVszXQphbGwuZ2VuZXMgPC0gcm93bmFtZXMoRXN0cnVzKQpFc3RydXMgPC0gU2NhbGVEYXRhKEVzdHJ1cywgZmVhdHVyZXMgPSBhbGwuZ2VuZXMsIHZhcnMudG8ucmVncmVzcyA9IGMoIm5Db3VudF9STkEiLCJwZXJjZW50Lm10IiksIHNjYWxlLm1heCA9IDEwKQojIEV4cGxhbmF0aW9ucyBiZWxvdyBhcmUgZnJvbSBbU2V1cmF0XShodHRwczovL3NhdGlqYWxhYi5vcmcvc2V1cmF0L2FyY2hpdmUvdjMuMC9jZWxsX2N5Y2xlX3ZpZ25ldHRlLmh0bWwpCiMgdmFycy50by5yZWdyZXNzID0gUmVncmVzc091dCBpbiBTZXVyYXQgdmVyc2lvbiAxLjQgb3IgbG93ZXIKIyBIb3dldmVyLCBhcyB0aGUgcmVzdWx0cyBvZiB0aGlzIHByb2NlZHVyZSBhcmUgc3RvcmVkIGluIHRoZSBzY2FsZWQgZGF0YSBzbG90ICh0aGVyZWZvcmUgb3ZlcndyaXRpbmcgdGhlIG91dHB1dCBvZiBTY2FsZURhdGEpIAojIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBtZXJnZWQgaW50byB0aGUgU2NhbGVEYXRhIGZ1bmN0aW9uIGl0c2VsZi4KcHJvYy50aW1lKClbM10gLSBwcmV2aW91c190aW1lCmBgYAojIyBQZXJmb3JtIGxpbmVhciBkaW1lbnNpb25hbCByZWR1Y3Rpb24gKFBDQSkKYGBge3J9CnByZXZpb3VzX3RpbWUgPC0gcHJvYy50aW1lKClbM10KRXN0cnVzIDwtIFJ1blBDQShFc3RydXMsIGZlYXR1cmVzID0gVmFyaWFibGVGZWF0dXJlcyhvYmplY3QgPSBFc3RydXMpKQpwcm9jLnRpbWUoKVszXSAtIHByZXZpb3VzX3RpbWUKYGBgCgojIyBFeGFtaW5lIGFuZCB2aXN1YWxpemUgUENBIHJlc3VsdHMgYSBmZXcgZGlmZmVyZW50IHdheXMKYGBge3J9CnByaW50KEVzdHJ1c1tbInBjYSJdXSwgZGltcyA9IDE6NSwgbmZlYXR1cmVzID0gNSkKYGBgCgpgYGB7cn0KVml6RGltTG9hZGluZ3MoRXN0cnVzLCBkaW1zID0gMToyLCByZWR1Y3Rpb24gPSAicGNhIikKYGBgCgpgYGB7cn0KRGltUGxvdChFc3RydXMsIHJlZHVjdGlvbiA9ICJwY2EiKSArIGdndGl0bGUobGFiZWwgPSAnSW5jbHVkaW5nIGltbXVuZSBjZWxscycpIApnZ3NhdmUoZmlsZW5hbWUgPSAiUENBX0luY2x1ZGluZ19pbW11bmVfY2VsbHMucGRmIiwgcGxvdCA9IGxhc3RfcGxvdCgpLCBkZXZpY2UgPSAicGRmIiwKICAgICAgICAgcGF0aCA9ICIvaG9tZS9uZ3V5ZW4vRmluYWxXb3JrL1IvUmVhZDEweC9GaWd1cmVzLyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aD0xMn0KRmVhdHVyZVBsb3QoRXN0cnVzLCByZWR1Y3Rpb24gPSAicGNhIiwgZmVhdHVyZXMgPSBjKCdPdmdwMScsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZveGoxJywgJ0lnZjEnLCAnUGR4aycsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Z4eWQ0JywgJ0JzZycsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NlcnBpbmExZScsICdLcnQxOScpKQpnZ3NhdmUoZmlsZW5hbWUgPSAiUENBX0luY2x1ZGluZ19pbW11bmVfY2VsbHMxLnBkZiIsIHBsb3QgPSBsYXN0X3Bsb3QoKSwgZGV2aWNlID0gInBkZiIsCiAgICAgICAgIHBhdGggPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL1JlYWQxMHgvRmlndXJlcy8iKQpgYGAKYGBge3IsIGZpZy53aWR0aD0xMn0KRmVhdHVyZVBsb3QoRXN0cnVzLCByZWR1Y3Rpb24gPSAicGNhIiwgZmVhdHVyZXMgPSBjKCdEY24nLCAnUGF4OCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRXBoeDInLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQZWNhbTEnLCAnUGRnZnJhJywgJ015aDExJywgJ0F0cDJiNCcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NkNTInKSkKZ2dzYXZlKGZpbGVuYW1lID0gIlBDQV9JbmNsdWRpbmdfaW1tdW5lX2NlbGxzMi5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9SZWFkMTB4L0ZpZ3VyZXMvIikKYGBgCgojIyBEZXRlcm1pbmUgdGhlIOKAmGRpbWVuc2lvbmFsaXR54oCZIG9mIHRoZSBkYXRhCiogU2V1cmF0IHR1dG9yaWFsIHVzZXMgSmFja1N0cmF3KCkgYW5kIGFuZCBTY29yZUphY2tTdHJhdyB0byBkZXRlcm1pbmUgZGltZW5zaW9uYWxpdHkKKiB0aGUgc3ludGF4IGlzOiAKICArIEVzdHJ1cyA8LSBKYWNrU3RyYXcoRXN0cnVzLCBudW0ucmVwbGljYXRlID0gMTAwKQogICsgRXN0cnVzIDwtIFNjb3JlSmFja1N0cmF3KEVzdHJ1cywgZGltcyA9IDE6MjApCiogSG93ZXZlciwgaXQgdGFrZXMgdmVyeSBsb25nLiAKKiBBbiBlbGJvdyBwbG90IG9mdGVuIGNvcnJlc3BvbmRzIHdlbGwgZW5vdWdoIHdpdGggdGhlIHNpZ25pZmljYW50IGRpbXMgYW5kIGlzIG11Y2ggZmFzdGVyIHRvIHJ1biB0aGFuIEphY2tzdHJhdwoqIEFjY29yZGluZyB0byB0aGUgZ3JhcGggYmVsb3csIGNob29zZSB0aGUgZmlyc3QgMjIgcHJpbmNpcGxlIGNvbXBvbmVudHMgdG8gdXNlCmBgYHtyfQpFbGJvd1Bsb3QoRXN0cnVzLCBuZGltcyA9IDQwKQpgYGAKIyMgRmluZCBuZWlnaGJvcnMKKiBEaW1zID0gZGltZW5zaW9ucyA9IGRldGVybWluZWQgYXMgMjIgZnJvbSB0aGUgYWJvdmUgc3RlcApgYGB7cn0KcHJldmlvdXNfdGltZSA8LSBwcm9jLnRpbWUoKVszXQpFc3RydXNfbmV3IDwtIEZpbmROZWlnaGJvcnMoRXN0cnVzLCBkaW1zID0gMToyMiwgay5wYXJhbSA9IDEwKQpwcm9jLnRpbWUoKVszXSAtIHByZXZpb3VzX3RpbWUKYGBgCiMjIEZpbmQgY2VsbCBjbHVzdGVycyB1c2luZyBMZWlkZW4ncyBtZXRob2QKYGBge3J9CiMgQWxnb3JpdGhtID0gNCBzcGVjaWZpZXMgTGVpZGVuJ3MgbWV0aG9kCnByZXZpb3VzX3RpbWUgPC0gcHJvYy50aW1lKClbM10KRXN0cnVzX25ldyA8LSBGaW5kQ2x1c3RlcnMoRXN0cnVzX25ldywgcmVzb2x1dGlvbiA9IDAuMTIsIGFsZ29yaXRobSA9IDQpCnByb2MudGltZSgpWzNdIC0gcHJldmlvdXNfdGltZQpgYGAKIyMgQ29uc3RydWN0aW5nIFVNQVAgcGxvdApgYGB7cn0KcHJldmlvdXNfdGltZSA8LSBwcm9jLnRpbWUoKVszXQpFc3RydXNfbmV3IDwtIFJ1blVNQVAoRXN0cnVzX25ldywgZGltID0gMToyMikgCnByb2MudGltZSgpWzNdIC0gcHJldmlvdXNfdGltZQpgYGAKIyMgVmlzdWFsaXphdGlvbgpgYGB7cn0KRGltUGxvdChFc3RydXNfbmV3LCByZWR1Y3Rpb24gPSAidW1hcCIpICsgZ2d0aXRsZShsYWJlbCA9ICdJbmNsdWRpbmcgaW1tdW5lIGNlbGxzJykKZ2dzYXZlKGZpbGVuYW1lID0gIlVNQVBfSW5jbHVkaW5nX2ltbXVuZV9jZWxscy5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9SZWFkMTB4L0ZpZ3VyZXMvIikKYGBgCmBgYHtyLCBmaWcud2lkdGg9MTJ9CkZlYXR1cmVQbG90KEVzdHJ1c19uZXcsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZmVhdHVyZXMgPSBjKCdPdmdwMScsICdGb3hqMScsICdEY24nLCAnU2VycGluYTFlJywgJ1NwcnIyZicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGeHlkNCcsICdMeTZhJywgJ0VwY2FtJywgJ0tydDE5JywgJ1ZpbScsICdQZGdmcmEnKSkKZ2dzYXZlKGZpbGVuYW1lID0gIlVNQVBfSW5jbHVkaW5nX2ltbXVuZV9jZWxsczEucGRmIiwgcGxvdCA9IGxhc3RfcGxvdCgpLCBkZXZpY2UgPSAicGRmIiwKICAgICAgICAgcGF0aCA9ICIvaG9tZS9uZ3V5ZW4vRmluYWxXb3JrL1IvUmVhZDEweC9GaWd1cmVzLyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aD0xMn0KRmVhdHVyZVBsb3QoRXN0cnVzX25ldywgcmVkdWN0aW9uID0gInVtYXAiLCBmZWF0dXJlcyA9IGMoJ015aDExJywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGtrMicsICdTbGl0cms2JywgJ0RpbzInLCAnU21vYzInLCAnVGVzJywgJ0RhYjEnLCAnQ2FtazFkJywgJ1BlY2FtMScsICdDZDUyJywnTWtpNjcnKSkKZ2dzYXZlKGZpbGVuYW1lID0gIlVNQVBfSW5jbHVkaW5nX2ltbXVuZV9jZWxsczIucGRmIiwgcGxvdCA9IGxhc3RfcGxvdCgpLCBkZXZpY2UgPSAicGRmIiwKICAgICAgICAgcGF0aCA9ICIvaG9tZS9uZ3V5ZW4vRmluYWxXb3JrL1IvUmVhZDEweC9GaWd1cmVzLyIpCmBgYAojIyBSZW1vdmluZyBpbW11bmUgY2VsbHMKYGBge3IsIGZpZy53aWR0aD0xMn0Kc3ViX0VzdHJ1cyA9IHN1YnNldCh4ID0gRXN0cnVzX25ldywgaWRlbnQgPSBjKDEsMiwzLDQsNSw3LDgsOSwxMSkpCkRpbVBsb3Qoc3ViX0VzdHJ1cywgcmVkdWN0aW9uID0gInVtYXAiKSArIGdndGl0bGUobGFiZWwgPSAnSW1tdW5lIGNlbGxzIHJlbW92ZWQnKQpnZ3NhdmUoZmlsZW5hbWUgPSAiVU1BUF9JbW11bmVfY2VsbHNfcmVtb3ZlZC5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9SZWFkMTB4L0ZpZ3VyZXMvIikKYGBgCmBgYHtyLCBmaWcud2lkdGg9MTJ9CkZlYXR1cmVQbG90KHN1Yl9Fc3RydXMsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZmVhdHVyZXMgPSBjKCdPdmdwMScsICdGb3hqMScsICdGeHlkNCcsICdDeGNsMTcnLCAnTXloMTEnLCAnQ2Q1MicsICdUd2lzdDInLCAnUGVjYW0xJykpCmdnc2F2ZShmaWxlbmFtZSA9ICJVTUFQX0ltbXVuZV9jZWxsc19yZW1vdmVkMS5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9SZWFkMTB4L0ZpZ3VyZXMvIikKYGBgCmBgYHtyLCBmaWcud2lkdGg9MTJ9CkZlYXR1cmVQbG90KHN1Yl9Fc3RydXMsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZmVhdHVyZXMgPSBjKCdQZGdmcmEnLCAnRXBoeDInLCAnRGNuJywgJ0tydDE5JywgJ0VwY2FtJywgJ1ZpbScsJ01raTY3JykpCmdnc2F2ZShmaWxlbmFtZSA9ICJVTUFQX0ltbXVuZV9jZWxsc19yZW1vdmVkMi5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9SZWFkMTB4L0ZpZ3VyZXMvIikKYGBgCmBgYHtyfQpzdWJfRXN0cnVzCmBgYAoqIEFmdGVyIHJlbW92aW5nIGltbXVuZSBjZWxscywgdGhlIGRhdGFzZXQgaXMgbGVmdCB3aXRoOgogICsgMTk0MjAgZ2VuZXMKICArIDE5MjYgY2VsbHMKCiMjIFJlLXJ1biBhbmFseXNpcyBhZnRlciBleGNsdWRpbmcgaW1tdW5lIGNlbGxzCmBgYHtyfQpwcmV2aW91c190aW1lIDwtIHByb2MudGltZSgpWzNdCnN1Yl9Fc3RydXMgPC0gUnVuUENBKHN1Yl9Fc3RydXMsIGZlYXR1cmVzID0gVmFyaWFibGVGZWF0dXJlcyhvYmplY3QgPSBzdWJfRXN0cnVzKSkKcHJvYy50aW1lKClbM10gLSBwcmV2aW91c190aW1lCmBgYAoKYGBge3IsIGZpZy53aWR0aD0xMn0KRGltUGxvdChzdWJfRXN0cnVzLCByZWR1Y3Rpb24gPSAicGNhIikgKyBnZ3RpdGxlKGxhYmVsID0gJ0ltbXVuZSBjZWxscyByZW1vdmVkJykKZ2dzYXZlKGZpbGVuYW1lID0gIlBDQV9JbW11bmVfY2VsbHNfcmVtb3ZlZC5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9SZWFkMTB4L0ZpZ3VyZXMvIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoPTEyfQpGZWF0dXJlUGxvdChzdWJfRXN0cnVzLCByZWR1Y3Rpb24gPSAicGNhIiwgZmVhdHVyZXMgPSBjKCdFc3IxJywgJ092Z3AxJywgJ0ZveGoxJywgJ0Z4eWQ0JywgJ0VwaHgyJywgJ0RjbicpKQpnZ3NhdmUoZmlsZW5hbWUgPSAiUENBX0ltbXVuZV9jZWxsc19yZW1vdmVkMS5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9SZWFkMTB4L0ZpZ3VyZXMvIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoPTEyfQpGZWF0dXJlUGxvdChzdWJfRXN0cnVzLCByZWR1Y3Rpb24gPSAicGNhIiwgZmVhdHVyZXMgPSBjKCdGb3MnLCAnS2NuZTMnLCAnU2VycGluYTFlJywgJ0NyYWJwMicsICdQZ3InLCAnVmltJykpCmdnc2F2ZShmaWxlbmFtZSA9ICJQQ0FfSW1tdW5lX2NlbGxzX3JlbW92ZWQyLnBkZiIsIHBsb3QgPSBsYXN0X3Bsb3QoKSwgZGV2aWNlID0gInBkZiIsCiAgICAgICAgIHBhdGggPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL1JlYWQxMHgvRmlndXJlcy8iKQpgYGAKYGBge3J9CnByZXZpb3VzX3RpbWUgPC0gcHJvYy50aW1lKClbM10Kc3ViX0VzdHJ1c19uZXcgPC0gRmluZE5laWdoYm9ycyhzdWJfRXN0cnVzLCBkaW1zID0gMToyMikKcHJvYy50aW1lKClbM10gLSBwcmV2aW91c190aW1lCmBgYAoKYGBge3J9CnByZXZpb3VzX3RpbWUgPC0gcHJvYy50aW1lKClbM10Kc3ViX0VzdHJ1c19uZXcgPC0gRmluZENsdXN0ZXJzKHN1Yl9Fc3RydXNfbmV3LCByZXNvbHV0aW9uID0gMC4wNCwgYWxnb3JpdGhtID0gNCkKcHJvYy50aW1lKClbM10gLSBwcmV2aW91c190aW1lCmBgYAoKYGBge3J9CnByZXZpb3VzX3RpbWUgPC0gcHJvYy50aW1lKClbM10Kc3ViX0VzdHJ1c19uZXcgPC0gUnVuVU1BUChzdWJfRXN0cnVzX25ldywgZGltID0gMToyMikKcHJvYy50aW1lKClbM10gLSBwcmV2aW91c190aW1lCmBgYAoKYGBge3IsIGZpZy53aWR0aD0xMH0KRGltUGxvdChzdWJfRXN0cnVzX25ldywgcmVkdWN0aW9uID0gInVtYXAiKSArIGdndGl0bGUobGFiZWwgPSAnUmVzY2FsZSBVTUFQIGFmdGVyIHJlbW92aW5nIEltbXVuZSBjZWxscycpCmdnc2F2ZShmaWxlbmFtZSA9ICJVTUFQX1Jlc2NhbGUucGRmIiwgcGxvdCA9IGxhc3RfcGxvdCgpLCBkZXZpY2UgPSAicGRmIiwKICAgICAgICAgcGF0aCA9ICIvaG9tZS9uZ3V5ZW4vRmluYWxXb3JrL1IvUmVhZDEweC9GaWd1cmVzLyIpCmBgYApgYGB7ciwgZmlnLndpZHRoPTEyfQpGZWF0dXJlUGxvdChzdWJfRXN0cnVzX25ldywgcmVkdWN0aW9uID0gInVtYXAiLCBmZWF0dXJlcyA9IGMoJ092Z3AxJywgJ0ZveGoxJywgJ0NyYWJwMicsICdNeWgxMScsICdXdDEnLCAnUzEwMGcnLCAnU3BycjJmJywKICAgICAgICAgICAgICAgICAgJ0Z4eWQ0JykpCmdnc2F2ZShmaWxlbmFtZSA9ICJVTUFQX1Jlc2NhbGUxLnBkZiIsIHBsb3QgPSBsYXN0X3Bsb3QoKSwgZGV2aWNlID0gInBkZiIsCiAgICAgICAgIHBhdGggPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL1JlYWQxMHgvRmlndXJlcy8iKQpgYGAKCmBgYHtyLCBmaWcud2lkdGg9MTJ9CkZlYXR1cmVQbG90KHN1Yl9Fc3RydXNfbmV3LCByZWR1Y3Rpb24gPSAidW1hcCIsIGZlYXR1cmVzID0gYygnRGNuJywgJ1BheDgnLCAnUGF4MicsICdUd2lzdDInLCAnSWdmMScsICdTZXJwaW5hMWUnLCAnUGRnZnJhJywgJ0tydDE5JywgJ01raTY3JykpCmdnc2F2ZShmaWxlbmFtZSA9ICJVTUFQX1Jlc2NhbGUyLnBkZiIsIHBsb3QgPSBsYXN0X3Bsb3QoKSwgZGV2aWNlID0gInBkZiIsCiAgICAgICAgIHBhdGggPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL1JlYWQxMHgvRmlndXJlcy8iKQpgYGAKIyMgTWFya2VyIGdlbmVzCmBgYHtyfQptYXJrZXJfZ2VuZXMgPSBjKCdFcGNhbScsICdLcnQxNScsJ0tydDgnLCdLcnQxOScsJ1ZpbScsJ1BkZ2ZyYScsJ1R3aXN0MicsICdTcHJyMmYnLCAnRnh5ZDQnLCAnSWdmYnA2JywKICAgICAgICAgICAgICAgICAnQWN0YTInLCAnTXloMTEnLCdGb3hqMScsJ092Z3AxJywnV3QxJywnU2VycGluYTFlJywnUzEwMGcnLCdQZWNhbTEnKQpgYGAKCiMjIFVNQVAgZm9yIG1hcmtlciBnZW5lcwpgYGB7ciwgZmlnLndpZHRoPTEyfQpGZWF0dXJlUGxvdChzdWJfRXN0cnVzX25ldywgcmVkdWN0aW9uID0gInVtYXAiLCBmZWF0dXJlcyA9IGMoJ0VwY2FtJywgJ0tydDE1JywnS3J0OCcsJ0tydDE5JywnVmltJywnUGRnZnJhJywnVHdpc3QyJywgJ1NwcnIyZicsICdGeHlkNCcpKQpnZ3NhdmUoZmlsZW5hbWUgPSAiVU1BUF9mb3JfTWFya2VyX2dlbmVzMS5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9SZWFkMTB4L0ZpZ3VyZXMvIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoPTEyfQpGZWF0dXJlUGxvdChzdWJfRXN0cnVzX25ldywgcmVkdWN0aW9uID0gInVtYXAiLCBmZWF0dXJlcyA9IGMoJ0lnZmJwNicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWN0YTInLCAnTXloMTEnLCdGb3hqMScsJ092Z3AxJywnV3QxJywnU2VycGluYTFlJywnUzEwMGcnLCdQZWNhbTEnKSkKZ2dzYXZlKGZpbGVuYW1lID0gIlVNQVBfZm9yX01hcmtlcl9nZW5lczIucGRmIiwgcGxvdCA9IGxhc3RfcGxvdCgpLCBkZXZpY2UgPSAicGRmIiwKICAgICAgICAgcGF0aCA9ICIvaG9tZS9uZ3V5ZW4vRmluYWxXb3JrL1IvUmVhZDEweC9GaWd1cmVzLyIpCmBgYAoKIyMgUmVuYW1lIGNsdXN0ZXJzCmBgYHtyfQpDbHVzdGVyLm5hbWVzIDwtIGMoJzEgQ2lsaWF0ZWRfSW5mQW1wJywKICAgICAgICAgICAgICAgICAgICcyIEVwaXRoZWxpYWxfc3Vic2V0JywKICAgICAgICAgICAgICAgICAgICczIFNlY3JldG9yeV9JbmZBbXAnLAogICAgICAgICAgICAgICAgICAgJzQgRmlicm9ibGFzdCBQZGdmcmErJywKICAgICAgICAgICAgICAgICAgICc1IFNlY3JldG9yeV9Jc3RoVVRKJywKICAgICAgICAgICAgICAgICAgICc2IEZpYnJvYmxhc3QgUGRnZnJhLScsCiAgICAgICAgICAgICAgICAgICAnNyBNdXNjbGUnKQpuYW1lcyhDbHVzdGVyLm5hbWVzKSA8LSBsZXZlbHMoc3ViX0VzdHJ1c19uZXcpCnN1Yl9Fc3RydXNfbmV3IDwtIFJlbmFtZUlkZW50cyhzdWJfRXN0cnVzX25ldywgQ2x1c3Rlci5uYW1lcykKRGltUGxvdChzdWJfRXN0cnVzX25ldywgcmVkdWN0aW9uID0gInVtYXAiLCBwdC5zaXplID0gMC41KSArIHNjYWxlX2NvbG9yX21hbnVhbChsYWJlbHMgPSBDbHVzdGVyLm5hbWVzLHZhbHVlcz1jKCdncmVlbicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWQnLCdibHVlJywnb3JhbmdlJywnZ3JleScsJ3llbGxvdycsJ3BpbmsnLCdwdXJwbGUnKSkKZ2dzYXZlKGZpbGVuYW1lID0gIlVNQVBfQ2x1c3RlcnNfbmFtZXMucGRmIiwgcGxvdCA9IGxhc3RfcGxvdCgpLCBkZXZpY2UgPSAicGRmIiwKICAgICAgICAgcGF0aCA9ICIvaG9tZS9uZ3V5ZW4vRmluYWxXb3JrL1IvUmVhZDEweC9GaWd1cmVzLyIpCmBgYApgYGB7ciwgZmlnLndpZHRoPTEyfQpEb3RQbG90KHN1Yl9Fc3RydXNfbmV3LCBmZWF0dXJlcyA9IG1hcmtlcl9nZW5lcywgZ3JvdXAuYnkgPSBzdWJfRXN0cnVzX25ld0BtZXRhLmRhdGEkaWRlbnQpICsgIAogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdD0xKSkgKwogIHNjYWxlX3lfZGlzY3JldGUobGFiZWxzID0gQ2x1c3Rlci5uYW1lcykKZ2dzYXZlKGZpbGVuYW1lID0gIkRvdFBsb3RfZm9yX01hcmtlcl9nZW5lcy5wZGYiLCBwbG90ID0gbGFzdF9wbG90KCksIGRldmljZSA9ICJwZGYiLAogICAgICAgICBwYXRoID0gIi9ob21lL25ndXllbi9GaW5hbFdvcmsvUi9SZWFkMTB4L0ZpZ3VyZXMvIikKYGBgCiMjIE51bWJlciBvZiBjZWxscyBpbiBlYWNoIGNsdXN0ZXJzCmBgYHtyfQp0YWJsZShzdWJfRXN0cnVzX25ld0BhY3RpdmUuaWRlbnQsIHN1Yl9Fc3RydXNfbmV3QG1ldGEuZGF0YSRvcmlnLmlkZW50KQpgYGAKCiMjIEV4dHJhY3QgdG9wIGdlbmVzIGZvciBlYWNoIGNsdXN0ZXIKKiBEZWZhdWx0IG1ldGhvZCBvZiBmaW5kaW5nIGhpZ2hseSBleHByZXNzZWQgZ2VuZXMgZm9yIEZpbmRBbGxNYXJrZXJzIGlzIFdpbGNveG9uIFJhbmsgU3VtIHRlc3QKYGBge3J9CnByZXZpb3VzX3RpbWUgPC0gcHJvYy50aW1lKClbM10Kc3ViX0VzdHJ1c19uZXdfbWFya2VycyA8LSBGaW5kQWxsTWFya2VycyhzdWJfRXN0cnVzX25ldywgb25seS5wb3MgPSBUUlVFLCBtaW4ucGN0ID0gMC4yNSwgbG9nZmMudGhyZXNob2xkID0gMC4yNSkKc3ViX0VzdHJ1c19uZXdfbWFya2VycyAlPiUKICAgIGdyb3VwX2J5KGNsdXN0ZXIpICU+JQogICAgc2xpY2VfbWF4KG4gPSAyMCwgb3JkZXJfYnkgPSBhdmdfbG9nMkZDKQpwcm9jLnRpbWUoKVszXSAtIHByZXZpb3VzX3RpbWUKYGBgCiMjIEhlYXQgbWFwIGZvciB0b3AgMTAgZ2VuZXMgaW4gZWFjaCBjbHVzdGVyCmBgYHtyLCBmaWcud2lkdGg9MTB9CnN1Yl9Fc3RydXNfbmV3X21hcmtlcnMgJT4lCiAgICBncm91cF9ieShjbHVzdGVyKSAlPiUKICAgIHRvcF9uKG4gPSAxMCwgd3QgPSBhdmdfbG9nMkZDKSAtPiB0b3AxMApEb0hlYXRtYXAoc3ViX0VzdHJ1c19uZXcsIGZlYXR1cmVzID0gdG9wMTAkZ2VuZSkgKyBOb0xlZ2VuZCgpCmdnc2F2ZShmaWxlbmFtZSA9ICJIZWF0TWFwX1RvcDEwX2dlbmVzLnBkZiIsIHBsb3QgPSBsYXN0X3Bsb3QoKSwgZGV2aWNlID0gInBkZiIsCiAgICAgICAgIHBhdGggPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL1JlYWQxMHgvRmlndXJlcy8iKQpgYGAKYGBge3J9CnNhdmVSRFMoc3ViX0VzdHJ1c19uZXcsIGZpbGUgPSAiL2hvbWUvbmd1eWVuL0ZpbmFsV29yay9SL1JlYWQxMHgvRXN0cnVzX3N1YnNldF9hbmFseXplZC5yZHMiKQpgYGAKCg==